<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/*
			 * 基本数据类型
			 * 	String Number Boolean Null Undefined
			 * 引用数据类型
			 * 	Object
			 * 
			 * 在JS中为提供了三个包装类，通过这三个包装类可以将基本数据类型的数据转换为对象
			 * 一般提供给浏览器使用,需要临时将基本数据类型转换对象
			 *
			 * 	String()
			 * 		- 可以将基本数据类型字符串转换为String对象
			 * 	Number()
			 * 		- 可以将基本数据类型的数字转换为Number对象
			 *  Boolean()
			 * 		- 可以将基本数据类型的布尔值转换为Boolean对象
			 *
			 * 重点注意：在实际应用中不会使用基本数据类型的对象，
			 * 		如果使用基本数据类型的对象，在做一些比较时可能会带来一些不可预期的结果
			 *
			 */
			
			//创建一个Number类型的对象
			//变量=数字值
			var num = 3;
			//向num中添加一个属性 undifined
			num.hello = "abcdefg";
			console.log(num.hello);

			//变量=对象
			var num = new Number(3);
			var num2 = new Number(3);
			//变量=对象
			var str = new String("hello");
			var str2 = new String("hello");
			//变量=对象
			var bool = new Boolean(true);
			//变量=布尔值
			var bool2 = true;
			
			//如果两个对象是一摸一样的，但是地址不同，它也会返回false
			console.log(str === str2);

			//对象转布尔值，都是true
			var b = new Boolean(false);
			if(b){
				alert("我运行了~~~");
			}
			
			/*
			 * 方法和属性之能添加给对象，不能添加给基本数据类型
			 * 	当对一些基本数据类型的值去调用属性和方法时，
			 * 	浏览器会临时使用包装类将其转换为对象，然后在调用对象的属性和方法
			 * 	调用完以后，在将其转换为基本数据类型
			 */
			var s = 123;
			s = s.toString();
			//可增加属性成功原因: 临时转换成对象,可增加属性,增加成功就销毁对象了
			s.hello = "你好";
			console.log(s.hello);
			console.log(typeof s)

		</script>
	</head>
	<body>
	</body>
</html>
